package com.swlz.service;

import java.util.List;

import com.swlz.dto.MallCartDTO;
import com.swlz.entity.MallCart;
import com.swlz.entity.MallOrder;
import com.swlz.exception.CodeException;
import com.swlz.vo.MallCartVO;
import com.swlz.vo.PageVO;

/**
 * <pre>
 * 业务逻辑接口
 * 商城购物车
 * ClassName : com.swlz.service.MallCartService
 * Author : swlz
 * E-Mail : 2233875735@qq.com
 * Date : 2020-06-29 10:20:18
 * Version : 1.0
 * Copyright 2020 swlz.top Inc. All rights reserved. 
 * Warning: this content is only for internal circulation of the company. It is forbidden to divulge it or use it for other commercial purposes
 * </pre>
 **/
public interface MallCartService {


	/**
	 * 添加一个新的商城购物车
	 * @param mallCart
	 * @return
	 * @throws CodeException 500:添加商城购物车错误
	 */
	int add(MallCart mallCart)throws CodeException;
	
	/**
	 * 根据购物车编号修改商城购物车
	 * @param mallCart
	 * @return
	 * @throws CodeException 501:修改商城购物车错误
	 */
	int update(MallCart mallCart)throws CodeException;
	
	
	/**
	 * 根据购物车编号删除商城购物车
	 * @param cartId - 购物车编号
	 * @return
	 * @throws CodeException 502:删除商城购物车错误
	 */
	int delete(Long cartId)throws CodeException;
	
	/**
	 * 根据购物车编号获取商城购物车对象
	 * @param cartId - 购物车编号
	 * @return
	 * @throws CodeException 503:获取商城购物车失败
	 */
	MallCart get(Long cartId)throws CodeException;
	
	/**
	 * 根据模型查找匹配的数据，并进行分页
	 * @param mallCart - 匹配数据模型
	 * @param current - 当前页面
	 * @param rowMax - 每页最大值
	 * @return - 分页结果
	 * @throws CodeException 504:获取商城购物车分页数据失败
	 */
	PageVO<MallCart> page(MallCart mallCart,Integer current,Integer rowMax)throws CodeException;

	/**
	 * 根据模型查找匹配的数据
	 * @param mallCart - 匹配数据模型
	 * @param len
	 * @return
	 * @throws CodeException 505:获取商城购物车列表数据失败
	 */
	List<MallCart> list(MallCart mallCart,int len);
	
	/**
	 * 根据用户编号，返回用户的购物车中的商品列表
	 * @param userId
	 * @return
	 */
	List<MallCartVO> list(Long userId);
	
	
	/**
	 * 添加订单,未支付状态
	 * @return 返回新加的订单实体类
	 */
	MallOrder addOrder(MallCartDTO dto);
 
}
